#ifndef CONNECTION_H
#define CONNECTION_H

#include <QTcpServer>
#include <QTcpSocket>
#include <QNetworkProxy>
#include <QThread>
#include "visualizadorconexoes.h"
#include "participante.h"
#include "pais.h"
#include "objetivo.h"
#include "listaobjetivos.h"
#include "listapaises.h"
#include "cores.h"
#include "mensagem.h"
#include "enviadormensagem.h"

class Connection : public QObject
{

    Q_OBJECT

public:
    Connection(QNetworkProxy proxy, int porta);
    QTcpServer *server;
    int porta_conexao;
    QList<Participante*> sockets_list;
    QList<Mensagem*> mensagens;
    VisualizadorConexoes* visualizador;
    ListaPaises* paises;
    ListaObjetivos* objetivos;
    Cores* cores;
    bool hasDataToRead();
    EnviadorMensagem* mensageiro;

public slots:

    void setSocket();
    void sendMessage(Mensagem* mensagem);
    void sendMessage(Participante* participante, QString mensagem);
    void sendMessage(QString mensagem);
    void pacoteDisponivel();
    void terminarEspera ();
    void iniciarJogo ();
    void passarVez (QString texto);
    void checarObjetivo (QString texto);

signals:

    void mudancaTropa (QString texto);
    void ataqueDeclarado (QString texto);
    void turnoEncerrado (QString texto);
    void verificarObjetivo (QString texto);

private:

    int ultimo_jogador;
    bool continuar;

};

#endif // CONNECTION_H
